Embedded systems are limited-purpose computer or processing systems optimized to perform one or more specialized functions. Often embedded systems are used to perform computation and/or control functions for the operation of a host device. For example, embedded systems can be included in such common host devices as wristwatches, network switches, and mobile phones.
To reduce the cost and complexity of the overall system, embedded systems are often specifically tailored to the needs of the host device. Consequently, the amount of memory provided in or for the embedded device is often minimized to reduce costs. This may become an issue, however, if the embedded system needs additional memory to later accommodate upgraded firmware or to support additional hardware.
Further, to reduce the complexity of the embedded system, the management of the embedded system memory is usually accomplished using relatively simple methods. These simple methods often lead to inefficient memory allocation, which may put more pressure on the already limited memory of the embedded system. This inefficient memory allocation may result in reduced functionality of the embedded system and/or the premature retirement of the host device due to seemingly insufficient embedded memory capacity.
Throughout the drawings, identical reference numbers designate similar, but not necessarily identical, elements.